//
//  Problem922.swift
//  TestProject
//
//  Created by 武侠 on 2021/4/16.
//  Copyright © 2021 zhulong. All rights reserved.
//

import UIKit

/*
 922. 按奇偶排序数组 II 【双指针】
 给定一个非负整数数组 A， A 中一半整数是奇数，一半整数是偶数。

 对数组进行排序，以便当 A[i] 为奇数时，i 也是奇数；当 A[i] 为偶数时， i 也是偶数。
 你可以返回任何满足上述条件的数组作为答案。

 示例：
     输入：[4,2,5,7]
     输出：[4,5,2,7]
     解释：[4,7,2,5]，[2,5,4,7]，[2,7,4,5] 也会被接受。

 提示：
     2 <= A.length <= 20000
     A.length % 2 == 0
     0 <= A[i] <= 1000
 */
@objcMembers class Problem922: NSObject {
    func solution() {
        print(sortArrayByParityII([4,2,5,7]))
    }
    
    /*
     1: 创建一个奇数指针 jp = 1, 创建一个偶数指针 op = 0
     2: 遍历数组，将偶数放入op的位置，奇数放入jp位置
     */
    func sortArrayByParityII(_ nums: [Int]) -> [Int] {
        var jp = 1
        var op = 0
        var result = Array(repeating: 0, count: nums.count)
        for num in nums {
            if num % 2 == 0 {
                result[op] = num
                op += 2
            } else {
                result[jp] = num
                jp += 2
            }
        }
        
        return result
    }

}
